package com.lzx.lock.utils;
import android.app.AppOpsManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.View;
import android.widget.RelativeLayout;
import com.lzx.lock.base.BaseActivity;
import java.util.ArrayList;
import java.util.List;
/**
* Created by xian on 2017/2/17.
*/
public class LockUtil {
/**
* 判断是否已经获取 有权查看使用情况的应用程序 权限
*
* @param context
* @return
*/
public static boolean isStatAccessPermissionSet(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
try {
PackageManager packageManager = context.getPackageManager();
ApplicationInfo info = packageManager.getApplicationInfo(context.getPackageName(), 0);
AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, info.uid, info.packageName);
return appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, info.uid, info.packageName) == AppOpsManager.MODE_ALLOWED;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} else {
return true;
}
}
/**
* 查看是存在查看使用情况的应用程序界面
*
* @return
*/
public static boolean isNoOption(Context context) {
PackageManager packageManager = context.getPackageManager();
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
/**
* 是否有开启通知栏服务
*/
private static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners";
public static boolean isNotificationSettingOn(Context mContext) {
String pkgName = mContext.getPackageName();
final String flat = Settings.Secure.getString(mContext.getContentResolver(), ENABLED_NOTIFICATION_LISTENERS);
if (!TextUtils.isEmpty(flat)) {
final String[] names = flat.split(":");
for (int i = 0; i < names.length; i++) {
final ComponentName cn = ComponentName.unflattenFromString(names[i]);
if (cn != null) {
if (TextUtils.equals(pkgName, cn.getPackageName())) {
return true;
}
}
}
}
return false;
}
public static Bitmap drawableToBitmap(Drawable drawable, RelativeLayout mUnLockLayout) {
int w = 20;
int h = 20;
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, w, h);
drawable.draw(canvas);
int[] pixex = new int[w * h];
List<Integer> trIndexs = new ArrayList<Integer>();
for (int i = 0; i < bitmap.getHeight(); i++) {
for (int j = 0; j < bitmap.getWidth(); j++) {
int color = bitmap.getPixel(j, i);
int alpha = Color.alpha(color);
if (alpha < 200) {
trIndexs.add(i * h + j);
} else if (trIndexs.size() > 0) {
for (Integer tr : trIndexs) {
pixex[tr] = color;
}
trIndexs.clear();
pixex[i * h + j] = color;
} else {
pixex[i * h + j] = color;
}
}
}
Bitmap bitmap2 = Bitmap.createBitmap(mUnLockLayout.getWidth(), mUnLockLayout.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas2 = new Canvas(bitmap2);
RectF rectF = new RectF(0, 0, mUnLockLayout.getWidth(), mUnLockLayout.getHeight());
canvas2.drawBitmap(Bitmap.createBitmap(pixex, w, h, Bitmap.Config.ARGB_8888), null, rectF, null);
return bitmap2;
}
public static void blur(Context mContent, Bitmap bkg, View view) {
long startMs = System.currentTimeMillis();
float radius = 50;
float scaleFactor = 8;
Bitmap overlay = Bitmap.createBitmap(
(int) (view.getMeasuredWidth() / scaleFactor),
(int) (view.getMeasuredHeight() / scaleFactor),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-view.getLeft() / scaleFactor, -view.getTop() / scaleFactor);
canvas.scale(1 / scaleFactor, 1 / scaleFactor);
Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(bkg, 0, 0, paint);
overlay = FastBlur.doBlur(overlay, (int) radius, true);
view.setBackgroundDrawable(new BitmapDrawable(mContent.getResources(), overlay));
}
public static Bitmap big(Bitmap bitmap) {
Matrix matrix = new Matrix();
matrix.postScale(2.5f, 2.5f);
Bitmap resizeBmp = Bitmap.createBitmap(bitmap, bitmap.getWidth() / 4,
bitmap.getHeight() / 4, bitmap.getWidth() / 2 - 1,
bitmap.getHeight() / 2 - 1, matrix, true);
return handleImage(resizeBmp, 85);
}
public static Bitmap handleImage(Bitmap bm, int hue) {
Bitmap bmp = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
Paint paint = new Paint();
paint.setAntiAlias(true);
ColorMatrix mHueMatrix = new ColorMatrix();
ColorMatrix mAllMatrix = new ColorMatrix();
float mHueValue = hue * 1.0F / 127;
mHueMatrix.reset();
mHueMatrix.setScale(mHueValue, mHueValue, mHueValue, 1);
mAllMatrix.reset();
mAllMatrix.postConcat(mHueMatrix);
paint.setColorFilter(new ColorMatrixColorFilter(mAllMatrix));
canvas.drawBitmap(bm, 0, 0, paint);
return bmp;
}
/**
* Home键操作
*/
public static void goHome(BaseActivity activity) {
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
activity.startActivity(homeIntent);
activity.finish();
}
}